package com.cg.asm.body.dao.roles;

import com.cg.asm.body.domain.dto.roles.RolesDTO;
import com.cg.asm.body.domain.vo.roles.RolesChoiceVO;
import com.cg.asm.body.domain.vo.roles.RolesPagedVO;
import com.cg.asm.client.exception.MybatisExample;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public interface RolesMapper {
    /**
     * 查询角色信息（分页）
     *
     * @param mybatisExample
     * @return
     */
    List<RolesPagedVO> selectByRolesInfo(MybatisExample mybatisExample);

    /**
     * 查询角色唯一性
     *
     * @param roleId
     * @return
     */
    String roleIsUnique(@Param("roleId") String roleId);

    /**
     * 保存角色信息
     *
     * @param rolesDTO
     */
    void saveNewRole(RolesDTO rolesDTO);

    /**
     * 根据角色ID删除角色信息
     *
     * @param roleIds
     */
    void delRole(String[] roleIds);

    /**
     * 保存更新角色信息
     *
     * @param rolesDTO
     */
    void saveEditRole(RolesDTO rolesDTO);

    /**
     * 根据角色类别和用户名称获取角色信息
     * PS：
     * userId == super 查询所有角色信息
     * userId != super 查询自己创建的角色信息
     *
     * @param roleType
     * @return
     */
    List<RolesChoiceVO> getRoleInfo(@Param("roleType") String roleType, @Param("userId") String userId);

    /**
     * 根据角色Id删除已关联的用户信息
     *
     * @param roleIds
     */
    void delUserRole(String[] roleIds);
}
